package com.hou.apizuul;

import com.netflix.zuul.ZuulFilter;
import com.netflix.zuul.context.RequestContext;
import com.netflix.zuul.exception.ZuulException;
import org.springframework.stereotype.Component;

//Zuul过滤器
@Component
public class PostZuulFilter extends ZuulFilter {//过滤器继承此类即可
    /**
     * 过滤器类型:
     *     类型可配置: pre post router error
     *                之前  代理或错误之后  代理时  错误时
     * @return
     */
    @Override
    public String filterType() {
        return "post";
    }
    /**
     * 配置顺序,顺序越小,越先执行
     * 过滤器是链式调用,一个会取调下一个
     * @return
     */
    @Override
    public int filterOrder() {
        return 1;
    }
    //是否使用这个过滤器
    @Override
    public boolean shouldFilter() {
        return true;
    }
    //执行过滤操作
    @Override
    public Object run() throws ZuulException {
        System.out.println("------------代理过滤器执行-------------");
        //过滤器之间传递数据,原理是ThreadLocal
        RequestContext currentContext = RequestContext.getCurrentContext();
        Object key = currentContext.get("key");
        System.out.println("获取到上一个过滤器数据:"+key);
        return null;
    }
}
